package com.charging.service;
import com.charging.entity.FaultReport;

import java.util.List;
import java.util.Map;

public interface FaultService {
    /**
     * 根据ID获取故障报告
     * @param id 故障ID
     * @return 故障报告实体
     */
    FaultReport getFaultById(Long id);

    /**
     * 获取所有故障报告列表
     * @return 故障报告列表
     */
    List<FaultReport> getAllFaults();

    /**
     * 添加故障报告
     * @param faultReport 故障报告实体
     * @return 是否添加成功
     */
    void addFault(FaultReport faultReport);

    /**
     * 更新故障报告信息
     * @param faultReport 故障报告实体
     * @return 是否更新成功
     */
    void updateFault(FaultReport faultReport);

    /**
     * 删除故障报告
     * @param id 故障ID
     * @return 是否删除成功
     */
    void deleteFault(Long id);

    /**
     * 分页查询故障报告
     * @param page 页码
     * @param pageSize 每页大小
     * @return 分页故障列表
     */
    List<FaultReport> findFaultsByPage(int page, int pageSize);

    /**
     * 获取故障报告总数
     * @return 故障总数
     */
    long findFaultCount();

    /**
     * 获取充电桩的故障历史
     * @param pileId 充电桩ID
     * @return 该充电桩的故障历史
     */
    List<FaultReport> getFaultHistoryByPile(Integer pileId);

    /**
     * 处理故障报告
     * @param faultId 故障ID
     * @param handlerId 处理人ID
     * @param action 处理动作(PROCESS-开始处理, RESOLVE-解决)
     * @return 是否处理成功
     */
    boolean handleFault(Integer faultId, Integer handlerId, String action);

    /**
     * 获取待处理故障报告
     * @return 待处理故障列表
     */
    List<FaultReport> getPendingFaults();

    /**
     * 根据状态筛选故障报告
     * @param status 状态(REPORTED, PROCESSING, RESOLVED)
     * @return 对应状态的故障列表
     */
    List<FaultReport> getFaultsByStatus(String status);

    /**
     * 获取最近一周的故障统计
     * @return 按日期分组的故障数量统计
     */
    Map<String, Integer> getWeeklyFaultStats();
}